import * as Cesium from "cesium";
import gsap from "gsap";
export default class LightCone {
  constructor(viewer) {
    this.parms = {
      height: 700,
      degress: 0,
    };
    // headingPitchRollToFixedFrame 从参考坐标系计算一个 4x4 变换矩阵
    this.modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
      // 坐标位置
      Cesium.Cartesian3.fromDegrees(113.3191, 23.109, this.parms.height),
      // 模型旋转情况 第一个为偏航也就是垂直y轴
      new Cesium.HeadingPitchRoll(this.parms.degress, 0, 0)
    );
    // 使用 primitives 原始的加载模型
    this.model = viewer.scene.primitives.add(
      new Cesium.Model.fromGltf({
        url: "/model/pyramid.glb",
        show: true, // 显示
        scale: 200, // 缩放
        minimumPixelSize: 12, // 最小像素
        maximumScale: 20000, // 最大像素
        allowPicking: false, // 是否可以点击
        debugShowBoundingVolume: false, // 绘制边界
        debugWireframe: false, // debug线框
        color: Cesium.Color.YELLOW.withAlpha(0.5),
        colorBlendMode: Cesium.ColorBlendMode.MIX, // 颜色混合模式
        modelMatrix: this.modelMatrix, // 模型位置矩阵
      })
    );
    this.animate();
  }
  animate() {
    gsap.to(this.parms, {
      height: 800,
      degress: Math.PI,
      duration: 1,
      ease: "power1.inOut",
      yoyo: true,
      repeat: -1,
      onUpdate: () => {
        this.model.modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
          // 坐标位置
          Cesium.Cartesian3.fromDegrees(113.3191, 23.109, this.parms.height),
          // 模型旋转情况 第一个为偏航也就是垂直y轴
          new Cesium.HeadingPitchRoll(this.parms.degress, 0, 0)
        );
      },
    });
  }
}
